#include "mypushbutton.h"


MyPushButton::MyPushButton(QString normaling, QString press_img)
{
    this->normal_img_path = normaling;
    this->press_img_path = press_img;

    QPixmap pix;
    bool ret = pix.load(this->normal_img_path);
    if (!ret)
    {
        QString str = QString("%1 图片加载失败").arg(this->normal_img_path);
        qDebug() << str;
        return;
    }

    // 设定图片大小
    this->setFixedSize(pix.width(), pix.height());

    // 设置不规则图片样式
    this->setStyleSheet( "QPushButton{border:0px;}" );

    // 设置图片
    this->setIcon(pix);

    // 设置图片大小
    this->setIconSize(QSize(pix.width(), pix.height()));
}

void MyPushButton::bounceUp()
{
    QPropertyAnimation *bound_animation = new QPropertyAnimation(this, "geometry");

    // 设定时间间隔
    bound_animation->setDuration(200);

    // 设置动画起始位置
    bound_animation->setStartValue(QRect(this->x(), this->y(), this->width(), this->height()));
    // 设置动画结束位置
    bound_animation->setEndValue(QRect(this->x(), this->y() + 10, this->width(), this->height()));

    // 设置曲线
    bound_animation->setEasingCurve(QEasingCurve::OutBounce);
    // 执行动画
    bound_animation->start();
}
void MyPushButton::boundDown()
{
    QPropertyAnimation *bound_animation = new QPropertyAnimation(this, "geometry");

    // 设定时间间隔
    bound_animation->setDuration(200);

    // 设置动画起始位置
    bound_animation->setStartValue(QRect(this->x(), this->y() + 10, this->width(), this->height()));
    // 设置动画结束位置
    bound_animation->setEndValue(QRect(this->x(), this->y(), this->width(), this->height()));

    // 设置曲线
    bound_animation->setEasingCurve(QEasingCurve::OutBounce);
    // 执行动画
    bound_animation->start();
}


// 鼠标按下事件
void MyPushButton::mousePressEvent(QMouseEvent *e)
{
    if (this->press_img_path != "") // 传入选中的图片不为空，需要后来选中后进行图片切换
    {
        QPixmap pix;
        bool ret = pix.load(this->press_img_path);
        if (!ret)
        {
            qDebug() << "picture load failed!";
            return;
        }
        // 设定图片大小
        this->setFixedSize(pix.width(), pix.height());
        // 设置不规则图片样式
        this->setStyleSheet( "QPushButton{border:0px;}" );
        // 设置图片
        this->setIcon(pix);
        // 设置图片大小
        this->setIconSize(QSize(pix.width(), pix.height()));
    }

    // 其它事情交给父类
    QPushButton::mousePressEvent(e);
}
// 鼠标释放事件
void MyPushButton::mouseReleaseEvent(QMouseEvent *e)
{
    if (this->press_img_path != "") // 传入选中的图片不为空，需要后来选中后进行图片切换
    {
        QPixmap pix;
        bool ret = pix.load(this->normal_img_path);
        if (!ret)
        {
            qDebug() << "picture load failed!";
            return;
        }
         // 设定图片大小
        this->setFixedSize(pix.width(), pix.height());
        // 设置不规则图片样式
        this->setStyleSheet( "QPushButton{border:0px;}" );
        // 设置图片
        this->setIcon(pix);
        // 设置图片大小
        this->setIconSize(QSize(pix.width(), pix.height()));
    }

    // 其它事情交给父类
    QPushButton::mouseReleaseEvent(e);
}
